﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.Mail;
using System.Text;

namespace Aop.Api.EmailSend
{
    public class SendEmailHelper
    {
        public string SendEmail(EmailContextDto context)
        {
            if (context.MailTitle == null)
                return "标题不能为空";
            //设置发送方邮件信息，例如：163邮箱

            Console.WriteLine($"{context.MailTitle}正在发送...");

            string stmpServer = @"smtp.163.com";    //smtp服务器地址，确定邮箱是否开启。
            string mailAccount = @"a202215820691240@163.com";    //邮箱账号
            string pwd = @"KBEZUBNHQDDANTGY";     //邮箱密码（163邮箱此处使用授权码，其他邮箱见邮箱规定使用的是邮箱密码还是授权码）
            /*string mailTo = @"1149036090@qq.com";    //接收人邮件
            string filePath = @"C:\Users\ljy\source\1.jpg";  //附件地址*/

            //邮件服务设置
            SmtpClient smtpClient = new SmtpClient();
            smtpClient.DeliveryMethod = SmtpDeliveryMethod.Network;     //指定电子邮件发送方式
            smtpClient.Host = stmpServer;       //指定发送方SMTP服务器
            smtpClient.EnableSsl = true;        //使用安全加密连接
            smtpClient.UseDefaultCredentials = true;        //不和请求一起发送
            smtpClient.Credentials = new NetworkCredential(mailAccount, pwd);       //设置发送账号密码

            MailMessage mailMessage = new MailMessage(mailAccount, context.mailTo);     //实例化邮件信息实体并设置发送方和接收方
            mailMessage.Subject = context.MailTitle;        //设置发送邮件得标题
            mailMessage.Body = context.mailContent;     //设置发送邮件内容
            if (!(context.filePath == null || context.filePath == ""))
                mailMessage.Attachments.Add(new Attachment(context.filePath));

            mailMessage.BodyEncoding = Encoding.UTF8;       //设置发送邮件得编码
            mailMessage.IsBodyHtml = false;     //设置标题是否为HTML格式
            mailMessage.Priority = MailPriority.Normal;     //设置邮件发送优先级

            try
            {
                smtpClient.Send(mailMessage);    //发送邮件
                return "发送成功！";
            }
            catch (SmtpException ex)
            {
                throw ex;
            }
        }
    }
}
